package com.bonc.datasource;

/**
 * @ClassName DynamicDataSourceContextHolder
 * @Description: 动态数据源上下文
 * @Author chenGJ
 * @Date 2021/12/22 10:58
 * @Version V1.0
**/
public class DynamicDataSourceContextHolder {

    /**
     * ThreadLocal 用于提供线程局部变量，在多线程环境可以保证各个线程内的变量独立于其他线程里的变量
     * 即 ThreadLocal可以为每个线程创建一个【单独的变量副本】
     * 相当于线程的private static类型变量
     */
    private static final ThreadLocal<String> contextHolder =new ThreadLocal<>();

    /**
     * 设置当前数据源
     * @param dataSource
     */
    public static void setDataSource(String dataSource){
        contextHolder.set(dataSource);
    }

    /**
     * 获取当前数据源
     * @return
     */
    public static String getDataSource(){
        return contextHolder.get();
    }

    /**
     * 清除当前数据源
     */
    public static void clearDataSource(){
        contextHolder.remove();
    }
}
